From a6d2714c023c1f666511aa70b1a45d9d82fc94cd Mon Sep 17 00:00:00 2001 From: James Henstridge Date: Sat, 18 Aug 2001 03:14:41 +0000 Subject: [PATCH] use the second argument to the weak ref notify, cleaning up some uglyness. 2001-08-18 James Henstridge * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the second argument to the weak ref notify, cleaning up some uglyness. (gtk_accel_group_attach): remove and add the weak notifier when changing the accel groups slist. (gtk_accel_group_detach): same here. --- ChangeLog | 8 ++++++++ ChangeLog.pre-2-0 | 8 ++++++++ ChangeLog.pre-2-10 | 8 ++++++++ ChangeLog.pre-2-2 | 8 ++++++++ ChangeLog.pre-2-4 | 8 ++++++++ ChangeLog.pre-2-6 | 8 ++++++++ ChangeLog.pre-2-8 | 8 ++++++++ gtk/gtkaccelgroup.c | 32 ++++++++++++++++++-------------- 8 files changed, 74 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8cdec99e51..7b3eda5f26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2001-08-18 James Henstridge + + * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the + second argument to the weak ref notify, cleaning up some uglyness. + (gtk_accel_group_attach): remove and add the weak notifier when + changing the accel groups slist. + (gtk_accel_group_detach): same here. + 2001-08-17 Darin Adler * gtk/gtktreeview.c: (gtk_tree_view_search_equal_func): Add diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 8cdec99e51..7b3eda5f26 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,11 @@ +2001-08-18 James Henstridge + + * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the + second argument to the weak ref notify, cleaning up some uglyness. + (gtk_accel_group_attach): remove and add the weak notifier when + changing the accel groups slist. + (gtk_accel_group_detach): same here. + 2001-08-17 Darin Adler * gtk/gtktreeview.c: (gtk_tree_view_search_equal_func): Add diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 8cdec99e51..7b3eda5f26 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +2001-08-18 James Henstridge + + * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the + second argument to the weak ref notify, cleaning up some uglyness. + (gtk_accel_group_attach): remove and add the weak notifier when + changing the accel groups slist. + (gtk_accel_group_detach): same here. + 2001-08-17 Darin Adler * gtk/gtktreeview.c: (gtk_tree_view_search_equal_func): Add diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 8cdec99e51..7b3eda5f26 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,11 @@ +2001-08-18 James Henstridge + + * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the + second argument to the weak ref notify, cleaning up some uglyness. + (gtk_accel_group_attach): remove and add the weak notifier when + changing the accel groups slist. + (gtk_accel_group_detach): same here. + 2001-08-17 Darin Adler * gtk/gtktreeview.c: (gtk_tree_view_search_equal_func): Add diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 8cdec99e51..7b3eda5f26 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,11 @@ +2001-08-18 James Henstridge + + * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the + second argument to the weak ref notify, cleaning up some uglyness. + (gtk_accel_group_attach): remove and add the weak notifier when + changing the accel groups slist. + (gtk_accel_group_detach): same here. + 2001-08-17 Darin Adler * gtk/gtktreeview.c: (gtk_tree_view_search_equal_func): Add diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 8cdec99e51..7b3eda5f26 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +2001-08-18 James Henstridge + + * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the + second argument to the weak ref notify, cleaning up some uglyness. + (gtk_accel_group_attach): remove and add the weak notifier when + changing the accel groups slist. + (gtk_accel_group_detach): same here. + 2001-08-17 Darin Adler * gtk/gtktreeview.c: (gtk_tree_view_search_equal_func): Add diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 8cdec99e51..7b3eda5f26 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +2001-08-18 James Henstridge + + * gtk/gtkaccelgroup.c (gtk_accel_group_object_destroy): use the + second argument to the weak ref notify, cleaning up some uglyness. + (gtk_accel_group_attach): remove and add the weak notifier when + changing the accel groups slist. + (gtk_accel_group_detach): same here. + 2001-08-17 Darin Adler * gtk/gtktreeview.c: (gtk_tree_view_search_equal_func): Add diff --git a/gtk/gtkaccelgroup.c b/gtk/gtkaccelgroup.c index 8f7639d78b..881a7a2c26 100644 --- a/gtk/gtkaccelgroup.c +++ b/gtk/gtkaccelgroup.c @@ -201,19 +201,17 @@ gtk_accel_group_unref (GtkAccelGroup *accel_group) } static void -gtk_accel_group_object_destroy (GObject *object) +gtk_accel_group_object_destroy (GSList *free_list, + GObject *where_the_object_was) { - GSList *free_list, *slist; - - free_list = g_object_get_qdata (object, accel_groups_key_id); - g_object_set_qdata (object, accel_groups_key_id, NULL); + GSList *slist; for (slist = free_list; slist; slist = slist->next) { GtkAccelGroup *accel_group; accel_group = slist->data; - accel_group->attach_objects = g_slist_remove (accel_group->attach_objects, object); + accel_group->attach_objects = g_slist_remove (accel_group->attach_objects, where_the_object_was); g_object_unref (accel_group); } g_slist_free (free_list); @@ -232,12 +230,15 @@ gtk_accel_group_attach (GtkAccelGroup *accel_group, accel_group->attach_objects = g_slist_prepend (accel_group->attach_objects, object); g_object_ref (accel_group); slist = g_object_get_qdata (object, accel_groups_key_id); - if (!slist) - g_object_weak_ref(object, - (GWeakNotify)gtk_accel_group_object_destroy, - object); + if (slist) + g_object_weak_unref(object, + (GWeakNotify)gtk_accel_group_object_destroy, + slist); slist = g_slist_prepend (slist, accel_group); g_object_set_qdata (object, accel_groups_key_id, slist); + g_object_weak_ref(object, + (GWeakNotify)gtk_accel_group_object_destroy, + slist); } void @@ -253,12 +254,15 @@ gtk_accel_group_detach (GtkAccelGroup *accel_group, accel_group->attach_objects = g_slist_remove (accel_group->attach_objects, object); g_object_unref (accel_group); slist = g_object_get_qdata (object, accel_groups_key_id); + g_object_weak_unref(object, + (GWeakNotify)gtk_accel_group_object_destroy, + slist); slist = g_slist_remove (slist, accel_group); - if (!slist) - g_object_weak_unref(object, - (GWeakNotify)gtk_accel_group_object_destroy, - object); g_object_set_qdata (object, accel_groups_key_id, slist); + if (slist) + g_object_weak_ref(object, + (GWeakNotify)gtk_accel_group_object_destroy, + slist); } void -- 2.30.2